//
//  Abstraction.hpp
//  Bridge
//
//  Created by Shane on 17/9/29.
//  Copyright © 2017年 Shane. All rights reserved.
//

#ifndef Abstraction_hpp
#define Abstraction_hpp

class AbstractionImplement;

class Abstraction {
public:
    virtual void operation() = 0;
    virtual ~Abstraction(){}
};


class RefinedAbstractionA : public Abstraction {
public:
    RefinedAbstractionA(AbstractionImplement *pImplement){
        this->m_pImplement = pImplement;
    }
    
    void operation();
   
    ~RefinedAbstractionA(){
     
    }
private:
    AbstractionImplement *m_pImplement;
    
};

class RefinedAbstractionB : public Abstraction {
public:
    RefinedAbstractionB(AbstractionImplement *pImplement){
        this->m_pImplement = pImplement;
    }
   
    void operation();
    
    ~RefinedAbstractionB(){
      
    }
private:
     AbstractionImplement *m_pImplement;
};

#endif /* Abstraction_hpp */
